.TH CTIME 3
.SH NAME
ctime, localtime, gmtime, asctime, tm2sec, timezone \- convert date and time
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.ta \w'\fLchar* 'u
.B
char*	ctime(long clock)
.PP
.B
Tm*	localtime(long clock)
.PP
.B
Tm*	gmtime(long clock)
.PP
.B
char*	asctime(Tm *tm)
.PP
.B
long	tm2sec(Tm *tm)
.SH DESCRIPTION
.I Ctime
converts a time
.I clock
such as returned by
.IR time (3)
into
.SM ASCII
(sic)
and returns a pointer to a
30-byte string
in the following form.
All the fields have constant width.
.PP
.B
	Wed Aug  5 01:07:47 EST 1973\en\e0
.PP
.I Localtime
and
.I gmtime
return pointers to structures containing
the broken-down time.
.I Localtime
corrects for the time zone and possible daylight savings time;
.I gmtime
converts directly to GMT.
.I Asctime
converts a broken-down time to
.SM ASCII
and returns a pointer
to a 30-byte string.
.IP
.EX
.ta 6n +\w'char 'u +\w'zone[4];    'u
typedef
struct {
	int	sec;	/* seconds (range 0..59) */
	int	min;	/* minutes (0..59) */
	int	hour;	/* hours (0..23) */
	int	mday;	/* day of the month (1..31) */
	int	mon;	/* month of the year (0..11) */
	int	year;	/* year A.D. \- 1900 */
	int	wday;	/* day of week (0..6, Sunday = 0) */
	int	yday;	/* day of year (0..365) */
	char	zone[4];	/* time zone name */
	int	tzoff;	/* time zone delta from GMT */
} Tm;
.EE
.PP
.I Tm2sec
converts a broken-down time to
seconds since the start of the epoch.
It ignores
.BR wday ,
and assumes the local time zone
if
.B zone
is not
.BR GMT .
.SH SOURCE
.B \*9/src/lib9/date.c
.br
.B \*9/src/lib9/ctime.c
.SH "SEE ALSO"
.IR date (1),
.IR time (3)
.SH BUGS
The return values point to static data
whose content is overwritten by each call.
.PP
Daylight Savings Time is ``normal'' in the Southern hemisphere.
.PP
These routines are not equipped to handle non-\c
.SM ASCII
text, and are provincial anyway.
.PP
To avoid name conflicts with the underlying system,
.IR ctime ,
.IR localtime ,
.IR gmtime ,
.IR asctime ,
and
.I tm2sec
are preprocessor macros defined as
.IR p9ctime ,
.IR p9localtime ,
.IR p9gmtime ,
.IR p9asctime ,
and
.IR p9tm2sec ;
see
.IR intro (3).
